/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.beans; import java.beans.*; import java.io.IOException; import java.lang.reflect.Modifier; import java.lang.reflect.InvocationTargetException; import java.util.ResourceBundle; import org.openide.TopManager; import org.openide.NotifyDescriptor; import org.openide.src.*; import org.openide.nodes.*; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.Utilities; /** Node representing a indexed property. * @see FieldElement * @author Petr Hrebejk */ public class IdxPropertyPatternNode extends PropertyPatternNode { /** Create a new field node. * @param element field element to represent * @param writeable <code>true</code> to be writable */ public IdxPropertyPatternNode( IdxPropertyPattern pattern, boolean writeable) { super(pattern, writeable); //BHM //setElementFormat (sourceOptions.getFieldElementFormat()); } /* Resolve the current icon base. * @return icon base string. */ protected String resolveIconBase() { switch (((PropertyPattern)pattern).getMode()) { case PropertyPattern.READ_WRITE: return IDXPROPERTY_RW; case PropertyPattern.READ_ONLY: return IDXPROPERTY_RO; case PropertyPattern.WRITE_ONLY: return IDXPROPERTY_WO; default: return null; } } public HelpCtx getHelpCtx () { return new HelpCtx (IdxPropertyPatternNode.class); } /* Creates property set for this node */ protected Sheet createSheet () { Sheet sheet = super.createSheet(); Sheet.Set ps = sheet.get(Sheet.PROPERTIES); ps.put(createIndexedTypeProperty( writeable )); ps.put(createIndexGetterProperty( false )); ps.put(createIndexSetterProperty( false )); return sheet; } /** Gets the localized string name of property pattern type i.e. * "Indexed Property", "Property". */ String getTypeForHint() { return bundle.getString( "HINT_IndexedProperty" ); } /* Removes the element from the class and calls superclass. * * @exception IOException if SourceException is thrown * from the underlayed Element. */ /* public void destroy() throws IOException { / try { FieldElement el = (FieldElement) element; el.getDeclaringClass().removeField(el); } catch (SourceException e) { throw new IOException(e.getMessage()); } * System.out.println ("Pattern should be removed"); super.destroy(); } */ /** Overrides the default implementation of clone node */ public Node cloneNode() { return new IdxPropertyPatternNode((IdxPropertyPattern)pattern, writeable); } /** Create a property for the indexed property type. * @param canW <code>false</code> to force property to be read-only * @return the property */ protected Node.Property createIndexedTypeProperty(boolean canW) { return new PatternPropertySupport(PROP_INDEXEDTYPE, Type.class, canW) { /** Gets the value */ public Object getValue () { return ((IdxPropertyPattern)pattern).getIndexedType(); } /** Sets the value */ public void setValue(Object val) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { super.setValue(val); if (!(val instanceof Type)) throw new IllegalArgumentException(); try { pattern.patternAnalyser.setIgnore( true ); ((IdxPropertyPattern)pattern).setIndexedType((Type)val); pattern.patternAnalyser.setIgnore( false ); } catch (SourceException e) { throw new InvocationTargetException(e); } } /** Define property editor for this property. */ public PropertyEditor getPropertyEditor () { return new org.openide.explorer.propertysheet.editors.TypeEditor(); } }; } /** Create a property for the getter method. * @param canW <code>false</code> to force property to be read-only * @return the property */ protected Node.Property createIndexGetterProperty(boolean canW) { return new PatternPropertySupport(PROP_INDEXEDGETTER, String.class, canW) { /** Gets the value */ public Object getValue () { ElementFormat fmt = new ElementFormat ("{n} ({p})"); // NOI18N MethodElement method = ((IdxPropertyPattern)pattern).getIndexedGetterMethod(); if ( method == null ) return bundle.getString("LAB_NoMethod"); else return (fmt.format (method)); } }; } /** Create a property for the getter method. * @param canW <code>false</code> to force property to be read-only * @return the property */ protected Node.Property createIndexSetterProperty(boolean canW) { return new PatternPropertySupport(PROP_INDEXEDSETTER, String.class, canW) { /** Gets the value */ public Object getValue () { ElementFormat fmt = new ElementFormat ("{n} ({p})"); // NOI18N MethodElement method = ((IdxPropertyPattern)pattern).getIndexedSetterMethod(); if ( method == null ) return bundle.getString("LAB_NoMethod"); else return (fmt.format (method)); } }; } } /* * Log * 6 Gandalf 1.5 1/12/00 Petr Hrebejk i18n * 5 Gandalf 1.4 10/22/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 4 Gandalf 1.3 7/26/99 Petr Hrebejk Better implementation of * patterns resolving * 3 Gandalf 1.2 7/8/99 Jesse Glick Context help. * 2 Gandalf 1.1 6/30/99 Ian Formanek Reflecting package * changes of some property editors * 1 Gandalf 1.0 6/28/99 Petr Hrebejk * $ */